package com.maochd.platform.util;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.maochd.platform.domain.SshInfo;
import lombok.SneakyThrows;
import lombok.experimental.UtilityClass;

/**
 * SFTP工具类
 */
@UtilityClass
public class SftpUtil {
    
    /**
     * 创建SSH会话
     *
     * @param jsch JSch实例
     * @param ssh SSH连接信息
     * @return SSH会话
     */
    @SneakyThrows
    public static Session createSession(JSch jsch, SshInfo ssh) {
        return ssh.getSession();
    }

    /**
     * 断开SFTP连接
     *
     * @param sftp SFTP通道
     */
    @SneakyThrows
    private static void disconnect(ChannelSftp sftp) {
        if (sftp != null) {
            if (sftp.isConnected()) {
                sftp.disconnect();
            }
            
            Session session = sftp.getSession();
            if (session != null) {
                session.disconnect();
            }
        }
    }
}
